The use of a power switch to turn an electronic device, such as a computer system, on or off is very widely known. More recently, with the advent of proliferation of portable electronic devices, such as so-called “notebook” computers, the use of a switch to change the power state of an electronic device, causing an electronic device to enter or exit a “suspend” or “hibernate” or other power conserving state, has become widely known. It is also widely known to use switches, generally, to start or stop the execution of various software routines on electronic devices having a processor. Common examples of such a use of switches are “reset” switches that cause software already running on an electronic device to be stopped while also causing software routines to reinitialize that electronic device to be started, or “setup” switches that cause software routines that allow a user to set parameters for an electronic device to be started.
In the area of computer systems, it is common to run a combination of software during the normal use of a computer system, and it is also common for different combinations of software to be run when a computer system is being configured for normal use. Each piece of software that is run on a computer system makes use of that computer system's resources, most notably memory and processor time, and it is widely accepted that it is not desirable to waste such resources by loading and running pieces of software that are not needed. Commonly available computer systems are designed to run a variety of operating systems and applications software, and part of this flexibility is achieved by providing a wide-ranging set of software routines within a computer's built-in repository of firmware. Often, much of the function served by the software routines within the firmware was to provide support for an array of input and output devices, such as keyboards, displays, terminals and printers. Operating systems running on such computer systems would often rely on these software routines within the firmware to provide this support. One of the best known examples of this is the basic input/output software (“BIOS”) found in read-only or erasable integrated circuits found on the main circuit board of widely available personal computers.
More recently, however, it has become common practice for operating systems to provide support for such input and output devices in order to allow greater flexibility in optimizing how these devices would interact with the operating system. As a result, operating systems have begun to rely progressively less and less on the software routines within the firmware, and this has begun to obviate the need to load and run such software routines.
However, despite this developing trend on the part of operating systems, such that the loading and running of such software routines within the firmware is often unnecessary during normal use of a computer system, there are still situations outside of normal use in which the loading and running of such software routines is desirable or even necessary. The most common example of such a situation is the running of setup software to configure a computer system for use. Often, setup software must be run to configure a computer system before an operating system can be loaded and run, and so there is no opportunity to make use of the support for input and output devices that might have been provided by an operating system.
Due to this continuing need to provide input and output device support ahead of loading and running an operating system, it is common for computer systems to be designed to always load and run the software routines within the firmware that provide such support, regardless of whether or not there is a need to do so. At a point after these software routines are loaded and support for input and output devices is now provided, it is common for user to be presented with the option to press a key on a keyboard connected to the computer system in order to start the setup software within the firmware. However, this wastes time, forcing the user of a computer system to wait while these software routines are loaded and run each time a computer system is turned on for the few occasions outside of normal use of the computer system where the user may desire to run such setup software.
The need exists to allow a user of an electronic device, such as a computer system, to be able to turn on the electronic device and to be able to choose at the time of doing so, what kinds of software will be run in order to allow the user to avoid unnecessary delays in turning on an electronic device for normal use.